#ifndef EDITORPATRONES_H
#define EDITORPATRONES_H

#include "editordatos.h"
#include "paneltabla.h"
#include "preparadortabla.h"
#include "patron.h"

class EditorPatrones : public EditorDatos
{
    Q_OBJECT
public:
    EditorPatrones(QWidget* ventanaPadre);
    ~EditorPatrones();

    bool mostrarDialogoSeleccion(Patron& patron); 

    QString getIdentificadorDialogo(bool edicion) { 
        return edicion ? "edicion patron" : "seleccion patron"; }

    void setProyecto(Proyecto* proyecto) { this->proyecto = proyecto; }
	void setListaPatrones(QList<Patron> listaPatrones) { this->listaPatrones = listaPatrones; }
	QList<Patron> getListaPatrones() { return listaPatrones; }

protected:
    void prepararTabla(PanelTabla* panelTabla, bool edicion);
    virtual void actualizarTabla();

    virtual void anadirDatos(Patron& patron) { 
        listaPatrones.append(patron);
    }
    virtual void modificarDatos(int indice, Patron& patron) {
        listaPatrones[indice] = patron;
    }
    virtual void eliminarDatos(int indice) { 
        listaPatrones.removeAt(indice);
    }

    bool editar(const QString& titulo, Patron& patron);

protected slots:
    void nuevo();
	void anadir() {}    
    void modificar();
    void copiar();
    void eliminar();    
    void subir();
    void bajar();
    void seleccionado() {}

public slots:
    void actualizar() { actualizarTabla(); }

protected:
    QList<Patron> listaPatrones;
    PreparadorTabla<Patron> preparadorTabla;  
    Proyecto* proyecto;
};


#endif // EDITORPATRONES_H
